import ClipboardUtils from '../ClipboardUtils';

export default class SystemShareUtils {
    private static instance: SystemShareUtils;

    public static getInstance() {
        if (!this.instance) {
            this.instance = new SystemShareUtils();
        }
        return this.instance;
    }

    private mInShare: ApicloudModules['inShare'];
    private mShareAction: ApicloudModules['shareAction'];
    private mIsIos: boolean;

    constructor() {
        this.mInShare = api.require('inShare');
        this.mShareAction = api.require('shareAction')
        if (!this.mInShare) {
            throw new Error('inShare 模块没引入')
        }
        if (!this.mShareAction) {
            throw new Error('shareAction 模块没引入')
        }
        this.mIsIos = api.systemType === 'ios';
    }


    /**
      * 分享文本
      * iOS微信不支持纯文字的分享
      * Android 微信朋友圈 不支持纯文字分享
      * iOS系统 和 Android 微信朋友圈 会通过 拷贝内容后打开微信
      * @param text 文本
      * @param scene session(好友)|timeline(朋友圈) 仅支持android
      */
    public shareText(params: {
        text: string,
        scene?: 'session' | 'timeline'
    }) {
        // iOS 和 Android 微信朋友圈 情况下 通过复制文本后提示打开微信
        if (this.mIsIos || params.scene === 'timeline') {
            ClipboardUtils.getInstance().set(params.text);
            const buttons = this.mIsIos ? ['取消', '前往'] : ['前往', '取消'];
            api.confirm({
                title: '温馨提示',
                msg: '分享内容复制完成,是否前往微信?',
                buttons
            }, (ret) => {
                const index = ret.buttonIndex;
                if ((this.mIsIos && index === 2) || (!this.mIsIos && index === 1)) {
                    api.openApp({
                        iosUrl: 'weixin://',
                        uri: 'weixin://'
                    });
                }
            });
            return;
        }
        // 只有android 分享朋友可以
        this.mInShare.shareTextTo({
            content: params.text,
            app: 'wxFriend',
            sendPattern: 'ONLY'
        });
    }

    /**
     * 分享图片
     * Android 平台不支持 widget:// 路径
     * @param contentUrl  图片地址
     * @param scene session(好友)|timeline(朋友圈) 仅支持android
     */
    public shareImage(params: {
        contentUrl: string;
        scene?: 'session' | 'timeline'
    }) {
        if (this.mIsIos) {
            this.mShareAction.share({
                images: [params.contentUrl],
                type: 'image',
            });
        } else {
            this.mInShare.shareImgsTo({
                imgPaths: params.contentUrl,
                app: params.scene === 'timeline' ? 'wxCircle' : 'wxFriend',
                sendPattern: 'ONLY'
            });
        }
    }

}


